#ifndef __I264E_RDINDEX_H__
#define __I264E_RDINDEX_H__

typedef struct i264e_rdposidx {
	int			i_frame;
	int			x;
	int			y;
	c_fsktype_t	fsktype;
	int			b_long;
} i264e_rdposidx_t;

typedef struct i264e_skip_param {
	int		nsize;
	int		msize;
	int		rdnum;
	int		rdsnum;
} i264e_skip_param_t;

typedef struct i264e_skip_info {
	c_skip_type_t	skip_type;
	i264e_skip_param_t	skip_param;
} i264e_skip_info_t;

typedef struct i264e_skip_header {
	int					gopsize;
	int					mscenecnt;
	int					b_mref;
	int					b_buf_share;
	i264e_skip_info_t	skip_info;
	i264e_rdposidx_t		rdposidx_pbase;
	i264e_rdposidx_t		rdposidx_cur;
} i264e_skip_header_t;

extern int i264e_init_skip_header(i264e_skip_header_t *h, int gopsize, int i_skip_type, int m, int n, int mscenecnt,
		int max_skiptype, int *rdnum, int *rdsnum, int b_mref, int b_buf_share);
extern int i264e_decide_slice_type_and_rd(i264e_t *h, i264e_thread_t *cur);
extern void i264e_decide_slice_qp(i264e_t *h, i264e_thread_t *cur);
i264e_frame_t *i264e_get_prev_fram_dec(i264e_t *h, i264e_thread_t *cur);
void i264e_dec_ref_pic_remark(i264e_t *h, i264e_thread_t *cur);
extern int i264e_decide_reset_slice_to_idr(i264e_t *h, i264e_thread_t *cur);

#endif /* __I264E_RDINDEX_H__ */
